package com.vhr.service;

import com.vhr.VO.AgeCountVO;
import com.vhr.VO.EmployeeVO;
import com.vhr.entities.Account;
import com.vhr.entities.Contract;
import com.vhr.entities.Employee;
import com.vhr.entities.Welfare;
import com.vhr.form.EmployeeForm;

import java.util.List;

/**
 * @Name EmployeeService
 * @Description:
 * @Author: CHAO
 * @Date: 2019/9/23
 */
public interface IEmployeeService {

    //插入补贴表信息
    int insertWelfare(Welfare welfare);
    //更新补贴信息表
    int updateWelfareByEmpId(Welfare welfare,Employee employee);
    //查询员工信息到编辑页面
    EmployeeForm selectEditPage(Integer empId);
    //根据部门信息和员工编号查询员工信息
    List<EmployeeVO> selectByDeptAndStatusAndName(Integer deptId,Integer status,String empName);

    //查询所有员工信息
    List<EmployeeVO> selectAll();
    //根据员工主键信息查询员工
    Employee selectEmployeeByPrimaryKey(Employee emp);
    //条件查询，模糊查询，
    List<Employee> selectEmployeeByExample(Employee emp);
    //根据主键更新员工信息
    int updateEmployeeByPrimaryKey(Employee emp);
    // 插入员工信息（添加员工账号信息，员工账号手动设置）
    int insertEmployee(Employee emp);
    // 删除员工信息（修改员工在职状态）
    int delelteEmployee(Employee emp);
    // 根据员工信息查询合同
    Contract selectContractByEmployee(Employee emp);
    // 根据员工信息修改合同信息（比如底薪和合同类型）
    int updateContractByEmployee(Employee emp, Contract contract);
    // 录入合同信息
    int insertContract(Contract contract);
    // 登录
    Employee login(Account account);
    // 退出
    Void logout();
    // 修改密码
    int changePassword(Account account, Employee emp);
    // 根据员工信息查找账户
    Account selectByEmployee(Employee emp);
    //统计员工年龄信息
    List<AgeCountVO> countByEmpBirth();
    //统计员工在职情况
    List<Integer> countByEmpStatus();
    //统计员工司龄信息
    List<Integer> countByContractDuration();

    //筛选列表员工名字
    List<Employee> searchEmployeeName();
}
